<?php
    //namespace Login\Controller;	
    
    require_once '\Models\LoginModel.php';
	require_once '\Views\LoginView.php';
	require_once '\Controllers\IController.php';
	require_once '\Models\DBConnection.php';
	require_once '\Helpers\Validate.php';
       
    class LoginController implements IController{
    	
		private $m_loginModel;
		
		public function __construct(LoginModel $loginModel){
			$this->m_loginModel = $loginModel;
		}
				
		public function CreateController()
		{
			//Variabler i functionen
			$xhtml;
			$username;
			$password;
			
			//Skapar objekt
			$loginView = new LoginView();
			
			//Om man är utloggad
			if($this->m_loginModel->IsLoggedIn() == false)
			{
				//Skapa loginruta
				$xhtml = $loginView->CreateLoginBox();
								
				//Hämtar indata(försöker logga in)
				if($loginView->TriedToLogin())
				{
					//Hämtar indata(User och password)
					$username = $loginView->GetUserName();
					$password = sha1($loginView->GetPassword());
					
					//Validering, så att inte skadlig kod kommer in.
					$validate = new Validate();
					if($validate->IsValidUsername($username) && $validate->IsValidUsername($password)){
						//Loggar in om rätt uppgifter...
						if($this->m_loginModel->Login($username, $password))
						{
							if($loginView->GetCheckBoxValue()){
								$loginView->CreateCookie($username, $password);
							}	
						}
						else
						{
							//annars Skriv ut felmeddelande...
							$xhtml = $loginView->CreateFailLoginStatusBox();
							$xhtml .= $loginView->CreateLoginBox();
						}	
					}
					else{
						$xhtml = $loginView->InvalidCharacters();
						$xhtml .= $loginView->CreateLoginBox();
					}
				}
			}
			
			//Om man är inloggad
			if($this->m_loginModel->IsLoggedIn())
			{
				//Skapa status och logoutruta				
				$user = $loginView->GetUserName();
				
				$xhtml = $loginView->CreateSuccessLoginStatusBox($user);
				$xhtml .= $loginView->CreateLogoutBox();
				
				//Hämtar indata (tryckt på logga ut)
				if($loginView->TriedToLogOut())
				{
					//Loggar ut och uppdaterar status
					$this->m_loginModel->Logout();
					$loginView->DestroyCookie();
					
					$xhtml = $loginView->CreateLogoutStatusBox();
					$xhtml .= $loginView->CreateLoginBox();			
				}
			}
			
			//Generera utdata
			return $xhtml;
		}
}
